package bszt.pdd;

import java.util.List;
import java.util.Scanner;

public class Code03 {

    /**
     * 问题描述
     * LYA最近沉迷于一款字符串消除游戏。游戏开始时，LYA会得到一个长度为N的仅由大小写字母构成的字符串S
     * 游戏中，LYA可以重复执行以下操作：从S中删除最长且最靠左的连续相同字符构成的子串
     * LYA想知道，最少经过多少次操作后，能够将整个字符串S删除完全
     * <p></p>
     * 输入格式
     * 第一行包含一个整数N，表示字符串的长度
     * 第二行包含一个字符串S，表示游戏初始时的字符串
     * <p></p>
     * 输出格式
     * 输出一个整数，表示将字符串完全删除所需的最少操作次数
     */

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] ind;
        String str = sc.next();
        int res = 0;
        while (!str.isEmpty()) {
            ind = new int[str.length()];
            if (str.length() == 1) {
                res++;
                break;
            }
            int max = 0;
            int cur = 0;
            for (int i = 0; i < str.length(); i++) {
                if (i == str.length() - 1) {
                    ind[i] = 1;
                    break;
                }
                int j = 1;
                while (i + j <= str.length() - 1 && str.charAt(i) == str.charAt(i + j)) j++;
                ind[i] = j;
                if (max < j) {
                    max = j;
                    cur = i;
                }
            }
            str = str.replaceFirst(str.substring(cur, cur + ind[cur]), "");
            res++;
        }
        System.out.println(res);
    }
}
